package main

// Go 提供了一个 flag 包，支持基本的命令行标志解析
import (
	"flag"
	"fmt"
)

func main() {
	/*
		基本的标记声明仅支持字符串、整数和布尔值选项。
		这里我们声明一个默认值为 "foo" 的字符串标志 word 并带有一个简短的描述。
		这里的 flag.String 函数返回一个字符串指针（不是一个字符串值），
		在下面我们会看到是如何使用这个指针的。
	*/
	wordPtr := flag.String("word", "foo", "a string")
	//使用和声明 word 标志相同的方法来声明 numb 和 fork 标志。
	numberPtr := flag.Int("numb", 42, "an int")
	forkPtr := flag.Bool("fork", false, "a bool")

	var svar string
	flag.StringVar(&svar, "svar", "bar", "a string var")
	flag.Parse()

	fmt.Println("word:", *wordPtr)
	fmt.Println("numb:", *numberPtr)
	fmt.Println("fork:", *forkPtr)
	fmt.Println("svar:", svar)
	fmt.Println("tail:", flag.Args())
}
